#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>

static int is_running = 1;

static void use_resource(void) {
    printf("使用资源 \n");
}

static void free_resource(void) {
    printf("释放资源 \n");
}


void signal_handler(int sig) {
    if (sig == SIGINT) {
        printf("ctrl+C结束 \n");
        is_running = 0;
    } else { // SIGTERM
        printf("kill结束 \n");
        free_resource();
        exit(EXIT_SUCCESS);
    }
    
}

int main(int argc, char const *argv[])
{
    // 注册信号处理函数
    signal(SIGINT, signal_handler); // CTRL + C
    signal(SIGTERM, signal_handler); // kill进程


    use_resource();

    // 不断的工作
    while (is_running)
    {
        printf("正在工作中... \n");
        sleep(1);
    }
    

    free_resource();
    
    return 0;
}
